import _ from 'lodash'
/**
 * 循环判空并合并
 *
 * @export
 * @param {*} minor  形参,会覆盖默认值
 * @param {*} main  默认值
 * @returns
 */
const mergeJSON = function (minor, main) {
  for (var key in minor) {
    if (main[key] === undefined) { // 不冲突的，直接赋值
      main[key] = minor[key]
    }
    // 冲突了，如果是Object，看看有么有不冲突的属性
    // 不是Object 则以（minor）为准为主，
    if (_.isObject(minor[key]) || _.isArray(minor[key])) { // arguments.callee 递归调用，并且与函数名解耦
      // arguments.callee(minor[key], main[key]);
      mergeJSON(minor[key], main[key])
    } else {
      main[key] = minor[key]
    }
  }
  return main
}

export default mergeJSON
